#include "widget.h"
#include "ui_widget.h"
#include "databasemanager.h"

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
#include <carmainwindow.h>
#include <QDebug>

/* 构造函数：初始化窗口和数据库 */
Widget::Widget(QWidget *parent): FramelessWidget(parent), ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->initForm();// 初始化窗体样式
    //ui->pushButton->setIcon(":/new/prefix1/icon/1.png")

    // 初始化数据库
    DatabaseManager::instance()->initialize();
}

/* 析构函数：释放UI资源 */
Widget::~Widget()
{
    delete ui;
}

/* 注册按钮点击事件：将账号密码插入数据库 */
void Widget::on_btn_regite_clicked()
{
    // 获取输入框内容
    QString accont = ui->lineEdit_accont->text();
    QString passwd = ui->lineEdit_password->text();

    // 检查账号或密码是否为空
    if(accont.isEmpty() || passwd.isEmpty())
    {
        QMessageBox::information(this,"注册","账号为空！！！");
        return;
    }

    // 准备SQL插入语句
    if (DatabaseManager::instance()->addUser(accont, passwd))
    {
        QMessageBox::information(this, "注册", "注册成功！");
    }
    else
    {
        QMessageBox::warning(this, "注册", "注册失败！");
    }

    ui->lineEdit_password->clear();  // 清空密码输入框
}

/* 登录按钮点击事件：验证账号密码 */
void Widget::on_btn_login_clicked()
{
    // 获取输入框内容
    QString accont_login = ui->lineEdit_accont->text();
    QString password_login = ui->lineEdit_password->text();

    // 检查输入是否为空
    if(accont_login.isEmpty() || password_login.isEmpty())
    {
        QMessageBox::information(this,"登录","密码为空！！！");
        return;
    }

    if (DatabaseManager::instance()->validateUser(accont_login, password_login))
    {
        // 登录成功处理
        CarMainWindow *widget = new CarMainWindow;
        widget->show();
        this->close();
    }
    else
    {
        QMessageBox::information(this, "登录", "账号或密码错误！");
    }
}

/* 初始化窗体样式和标题栏 */
void Widget::initForm()
{
    //设置标题栏控件
    ui->labTitle->setText("登录/注册");
    this->setWindowTitle(ui->labTitle->text());
    this->setTitleBar(ui->labTitle);

    //关联信号
    connect(this, SIGNAL(titleDblClick()), this, SLOT(titleDblClick()));
    connect(this, SIGNAL(windowStateChange(bool)), this, SLOT(windowStateChange(bool)));

    //设置样式表
    QStringList list;
    list << "#titleBar{background:#6CE2BB;}";
    list << "#titleBar{border-top-left-radius:8px;border-top-right-radius:8px;}";
    list << "#widgetMain{border:2px solid #A2E9D5;background:#A2E9D5;}";
    //list << "#widgetMain{border-bottom-left-radius:8px;border-bottom-right-radius:8px;}";
    this->setStyleSheet(list.join(""));
}

/* 标题栏双击事件：最大化/还原窗口 */
void Widget::titleDblClick()
{
    on_btnMenu_Max_clicked();
}

/* 窗口状态变化事件处理 */
void Widget::windowStateChange(bool max)
{
    ui->btnMenu_Max->setText(max ? "还原" : "最大");
}

/* 最小化按钮点击事件 */
void Widget::on_btnMenu_Min_clicked()
{
#ifdef Q_OS_MACOS
    this->setWindowFlags(this->windowFlags() & ~Qt::FramelessWindowHint);
#endif
    this->showMinimized();
}

/* 最大化/还原按钮点击事件 */
void Widget::on_btnMenu_Max_clicked()
{
    if (this->isMaximized())
    {   // 当前最大化则还原
        this->showNormal();
        ui->btnMenu_Max->setText("最大");
    }
    else
    {   // 否则最大化
        this->showMaximized();
        ui->btnMenu_Max->setText("还原");
    }
}

/* 关闭按钮点击事件 */
void Widget::on_btnMenu_Close_clicked()
{
    this->close();

}
